# Компилятор
CC = gcc

# Флаги компиляции
CFLAGS = -Wall -Wextra $(shell pkg-config --cflags libmagic uchardet libarchive libavformat libavcodec libavutil libexif)

# Имя исполняемого файла
TARGET = cmfa

# Исходные файлы
SOURCES = complex_modules_file_analyzer.c $(wildcard module_*.c)

# Объектные файлы
OBJECTS = $(SOURCES:.c=.o)

# Библиотеки
LIBS = $(shell pkg-config --libs libmagic uchardet libarchive libavformat libavcodec libavutil libexif)

# Цель по умолчанию: компиляция программы
all: check_deps $(TARGET)

# Проверка зависимостей
check_deps:
	@command -v pkg-config >/dev/null 2>&1 || \
	(echo "Ошибка: pkg-config не установлен. Установите его: sudo apt install pkgconf"; exit 1)
	@pkg-config --exists libmagic uchardet libarchive libavformat libavcodec libavutil libexif || \
	(echo "Ошибка: Необходимые библиотеки не найдены."; \
	 echo "Установите их с помощью: sudo apt install libmagic-dev libuchardet-dev libarchive-dev libavformat-dev libavcodec-dev libavutil-dev libexif-dev"; \
	 exit 1)

# Правило для сборки исполняемого файла
$(TARGET): $(OBJECTS)
	$(CC) $(OBJECTS) -o $(TARGET) $(LIBS)

# Правило для компиляции исходных файлов в объектные
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

# Очистка скомпилированных файлов
clean:
	rm -f $(OBJECTS) $(TARGET)

# Указываем, что clean и check_deps — не файлы
.PHONY: clean check_deps
